/*
 * @Date: 2024-12-09 11:03:18
 * @Author: LiSong
 * @LastEditors: LiSong
 * @LastEditTime: 2024-12-19 16:35:26
 * @Description: 主页设计的数据集pinia store
 */
import { defineStore } from 'pinia';
import { defAxios as request } from '@/utils/http'


// const doFunc = (t, i, s) => {
//   return new Promise((resolve, reject) => {
//     const y = (o) => {
//       try {
//         e(s.next(o));
//       } catch(err) {
//         reject(err)
//       }
//     }
//     const l = (o) => {
//       try {
//         e(s.throw(o));
//       } catch(err) {
//         reject(err)
//       }
//     }
//     const e = (o) => {
//       console.log('e', o)
//       if (o.done) {
//         resolve(o.value)
//       } else {
//         Promise.resolve(o.value).then(y, l)
//       }
//     }
//     e((s = s.apply(t, i)).next());
//   })
// }
// const moniReq = () => {
//   // return request({
//   //   url: '/home/licenseInfo',
//   //   method: 'get'
//   // })
//   return new Promise((resolve, reject) => {
//     resolve(['v1', 'v2', 'v3', 'v4', 'v5'])
//   })
// }
// const loadCol = (_this, load, func) => {
//   return new Promise((resolve, reject) => {
//     const gen = func.apply(_this, load)
//     const execute = (o) => {
//       if (o.done) {
//         resolve(o.value)
//       } else {
//         Promise.resolve(o.value).then((o) => {
//           try {
//             execute(gen.next(o))
//           } catch (err) {
//             reject(err)
//           }
//         }, (o) => {
//           try {
//             execute(gen.throw(o))
//           } catch (err) {
//             reject(err)
//           }
//         })
//       }
//     }
//     execute(gen.next())
//   })
// }
export const useDbSourceStore = defineStore('dbsource', {
  state: () => ({
    // 数据源字段信息
    colDic: {},
    // 是否已经加载数据源
    colLoad: {},
    // 数据源子集字段
    colChildDic: {},
    // 数据源结果存储
    dbSourceDic: {},
  }),
  actions: {
    // loadDbCol(t, load = true) {
    //   const generator = function* () {
    //     if (!this.colLoad[t] || !load) {
    //       this.colLoad[t] = true
    //       const res = yield moniReq(t);
    //       console.log('function*', res)
    //       this.colDic[t] = res;
    //     }
    //   }
    //   return loadCol(this, null, generator)
    // },

    /**
     * 获取数据源解析的字段下拉选项
     * 
     * @param {String} t 关键词
     * @returns {Array}
     */
    getDbCol(t) {
      return this.colDic[t]
    },
    /**
     * 获取指定的数据源数据
     * 
     * @param {String} t 关键词
     * @param {Any} d 默认值
     * @returns 
     */
    getDbSourceDic(t, d) {
      return this.dbSourceDic[t] || d || {}
    },
    /**
     * 设置数据源解析的字段信息
     * 
     * @param {String} t 关键字
     * @param {Any} v 值
     */
    setDbCol(t, v) {
      this.colDic[t] = v
      this.colLoad[t] = true
    },
    /**
     * 设置数据源解析的字段信息(分层级)
     * 
     * @param {String} t 关键字
     * @param {Any} v 值
     */
    setDbChildCol(t, v) {
      this.colChildDic[t] = v
    },
    /**
     * 设置数据源数据的信息
     * 
     * @param {String} t 关键字
     * @param {Any} v 值
     */
    setDbSourceDic(t, v) {
      this.dbSourceDic[t] = v
    },
    /**
     * 删除数据源解析的字段信息
     * 
     * @param {String} t 关键字
     */
    removeDbCol(t) {
      if (!this.colDic[t]) return
      delete this.colDic[t]
    }
  },
})

